# -*- coding:utf-8 -*-
"""
    main入口
"""
import os

def get_all_func():
    data = [ func for name,func in globals().items() if hasattr(func, 'enable')]
    print("支持功能列表：")
    for func in data:
        print("{:30} {}".format(green(func.alias) if func.enable else red(func.alias), func.__doc__))
    return data

def args_parse():
    import argparse
    parser = argparse.ArgumentParser(
        prog=__file__,
        description=dedent("""安天挖矿木马检测工具
                              红色代表尚在开发中，运行不稳定，不能使用
                           """)
    )

    parser.add_argument('-N', '--no',
                        action='store',
                        nargs="+",
                        help='No，禁用功能')

    parser.add_argument('-O', '--only',
                        action='store',
                        nargs="+",
                        help='only，仅做某项功能检测')

    parser.add_argument('-F', "--filename",
                        action="store",
                        default="report.txt",
                        help="指定报告文件的名称,默认为report.txt")

    parser.add_argument('-P', "--dirname",
                        action="store",
                        default="/tmp/",
                        help="指定报告和日志保存的目录,默认在/tmp/目录下")

    parser.add_argument(
        '-v', '--version',
        action='version',
        version=__version__ or "0.0.1",
    )

    return parser.parse_args()

def do_detect(option):
    funcs = [ (name,func) for name,func in globals().items()]
    for name,func in funcs:
        if hasattr(func, 'enable') and func.enable:
            func(option)

def main():
    get_all_func()
    option = args_parse()
    anscan_filelog_path(option)
    # alarm_for_not_online(option)
    do_detect(option)
    report(option)
    dump_report()
    online_detect(option)
    log("查看报告: more {}".format(g_anscan_filepath["report"]))
    # log("查看日志: more {}".format(g_anscan_filepath["anscanlog"]))

if __name__ == '__main__':
    main()
